package uiMain;

import gestorbienraizok.usuarios.Cliente;
import gestorbienraizok.usuarios.ClienteAnonimo;
import gestorbienraizok.usuarios.Funcionario;
import java.util.Scanner;
import static uiMain.bienRaizOk.entrada;
import static uiMain.bienRaizOk.listaDeClientesAnonimos;
import static uiMain.bienRaizOk.listaDePersonas;

public class OpcionRegistrarNuevoCliente extends OpcionDeMenu {

    private final String nombreParaMostrar = " Registrar un nuevo cliente";

    @Override
    public void ejecutar() {
        Funcionario llamador = (Funcionario) uiMain.bienRaizOk.usuarioActual;

        long cedula;
        do {
            System.out.print("Ingrese la cédula del cliente a registrar: ");
            entrada = new Scanner(System.in);
            cedula = entrada.nextLong();
        } while (cedula < 0);
        
        ClienteAnonimo esteClienteAnonimo = llamador.buscarEnAgendaBorrarYDevolver(cedula);

        if (esteClienteAnonimo == null) {
            System.out.println("En su agenda de citas no se encontró ningún cliente con cédula " + cedula);
            return;
        } else {
            String nombre = esteClienteAnonimo.getNombre();
            System.out.println("Se procederá con el registro de " + nombre);
            System.out.print("Cree una contraseña para este cliente: ");
            entrada.nextLine();
            String contrasenha = entrada.nextLine();

            System.out.print("Ingrese la dirección de este cliente: ");
            String direccion = entrada.nextLine();

            long telefono;
            do {
                System.out.print("Ingrese el telefono: ");
                telefono = entrada.nextLong();
            } while (telefono < 0);

            boolean tieneCelular = verificarCaracteristica("Desea ingresar un numero de celular? (S/N): ", "s", "n");
            long celular = 0;
            if (tieneCelular) {
                do {
                    System.out.print("Ingrese el numero de celular: ");
                    celular = entrada.nextLong();
                } while (celular < 0);
            }
            Cliente nuevoCliente = new Cliente(cedula, contrasenha, nombre, direccion, telefono, celular);
            listaDePersonas.add(nuevoCliente);

            boolean asignarRol = verificarCaracteristica("Desea asignarle el rol a este cliente? (S/N): ", "s", "n");

            if (asignarRol) {
                OpcionAsignarRolAUnCliente opcionTemporal = new OpcionAsignarRolAUnCliente();
                opcionTemporal.setCedulaPasada(cedula);
                opcionTemporal.ejecutar();
            }
            listaDeClientesAnonimos.remove(esteClienteAnonimo);
        }
    }

    @Override
    public String toString() {
        return nombreParaMostrar;
    }
    
    @Override
    public String toStringParaMostrarElNivel() {
        return nombreParaMostrar.trim().concat("...................................................................").substring(0,67) + "Funcionarios";
    }

}
